#ifndef DESCARGA_H_
#define DESCARGA_H_

#include <string>
#include <time.h>
#include <unistd.h>
#include <iostream>
#include <fstream>
#include <sys/types.h>
#include <pwd.h>
#include "exceptions/DescargaFallidaException.h"
#include "Entorno.h"
#include "Utils.h"
#include "../Log.h"

class Descarga {

private:

	// Solicitud de esta instancia
	SolicitudDescargaType solicitud;

public:
	/*
	 * Constructor de descarga para un archivo compartido
	 */
	Descarga(int idUsuarioComparte, string pathArchivo, int idUsuarioDescarga);

	/*
	 * Constructor de descarga para obtener la lista de archivos compartidos
	 * del usuario (idUsuarioComparte)
	 */
	Descarga(int idUsuarioComparte, int idUsuarioDescarga);

	/*
	 * Destructor
	 */
	virtual ~Descarga();

	/*
	 * Ejecuta una descarga del archivo
	 */
	void ejecutar();

	/*
	 * Genera una descarga para obtener archivos publicados
	 * por otro usuario
	 */
	list<string> verArchivosCompartidos();
};

#endif /* DESCARGA_H_ */
